import {
    Http
} from "../utils/http.js"

class IndexData {
    // 获取最新一期数据

    static async getLatest() {
        let data = await Http.request({
            url: `classic/latest`
        })
        // 将每次最新一期的期刊号存在缓存中
        if (data) {
            this._setStorage("latestIndex", data.index)
            // 将最新的数据也存储  保证数据的最新
            let key = this._getKey(data.index)
            this._setStorage(key, data)
        }
        return data
    }

    /**获取上一期或下一期
     * 将每次获取的期刊存入缓存 
     * 发送请求之前查看缓存是否有数据
     * 有就取出赋值 没有发送请求缓存
     */
    static async getNextOrPrevious(index, nextOrPrevious) {
        let tempIndex = nextOrPrevious == "next" ? index + 1 : index - 1

        let key = this._getKey(tempIndex)
        let data = this._getStorage(key)
        // 缓存有数据
        if (data) {
            return this._getStorage(key)
        }
        // 缓存没有数据
        let res = await Http.request({
            url: `classic/${index}/${nextOrPrevious}`
        })
        this._setStorage(key, res) // 存入缓存
        return res

    }

    // 是否第一期期刊
    static isFirst(index) {
        return index == 1 ? true : false
    }

    // 是否最新一期期刊
    static isLatest(index) {
        return this._getStorage('latestIndex') == index

    }

    // 获取存储缓存的key
    static _getKey(index) {
        return "index-" + index

    }

    // 设置缓存数据
    static _setStorage(key, data) {
        wx.setStorageSync(key, data)
    }

    // 获取缓存数据
    static _getStorage(key) {
        return wx.getStorageSync(key)
    }
}
export {
    IndexData
}